// WaterfallHook：瀑布钩子，上一个监听的返回值可传递至下一个
const { SyncWaterfallHook } = require('tapable')

// 创建实例对象
let hook =  new SyncWaterfallHook(['name', 'age'])

// 添加事件监听
hook.tap('fn1', function (name, age) {
    console.log('fn1--->', name, age)
    return 'fn1 return'
})

hook.tap('fn2', function (name, age) {
    console.log('fn2--->', name, age)
    // return 'fn2 return'
    // return undefined
})

hook.tap('fn3', function (name, age) {
    console.log('fn3--->', name, age)
    return 'fn3 return'
})

// 触发事件监听
hook.call('SyncWaterfallHook', 17)
